Skip to content
Built 26/04/17 09:08commit f8ff6f9

中文 | English

Image

这是我在连续 10 个月每日使用后的完整配置:skills、hooks、subagents、MCPs、plugins,以及那些真正有效的东西。

自从 2 月实验性上线以来,我一直是 Claude Code 的重度用户,并且和 @DRodriguezFX 一起,完全使用 Claude Code,凭借 Zenith 赢得了 Anthropic x Forum Ventures 黑客松。

2025 年 9 月 16 日

在纽约举行的 @AnthropicAI x @forumventures 黑客松上拿下了冠军,感谢主办方,这次活动非常棒(还有价值 1.5 万美元的 Anthropic Credits)我和 @DRodriguezFX 构建了 PMFProbe,帮助创始人从 0 -> 1,在 pre MVP 阶段验证你的想法,更多内容很快会公布

Skills 和 Commands

Skills 的作用类似规则,但被限制在特定作用域和工作流内。当你需要执行某个特定工作流时,它们就是 prompt 的快捷方式。

在用 Opus 4.5 进行了长时间编码会话之后,你想清理死代码和零散的 .md 文件?

运行 /refactor-clean。需要测试?用 /tdd/e2e/test-coverage。Skills 和 commands 可以在同一个 prompt 中串联使用

Image

把 commands 串联在一起

我可以做一个在检查点更新 codemap 的 skill,这样 Claude 就能快速导航你的代码库,而不用在探索上消耗上下文。

~/.claude/skills/codemap-updater.md

Commands 是通过斜杠命令执行的 skills。二者有重叠,但存储位置不同:

  • Skills: ~/.claude/skills - 更宽泛的工作流定义
  • Commands: ~/.claude/commands - 快速可执行 prompts
bash
# 示例 skill 结构
~/.claude/skills/
  pmx-guidelines.md      # 项目特定模式
  coding-standards.md    # 语言最佳实践
  tdd-workflow/          # 带 README.md 的多文件 skill
  security-review/       # 基于检查清单的 skill

Hooks

Hooks 是基于触发器的自动化,会在特定事件上触发。与 skills 不同,它们被限制在 tool calls 和生命周期事件上。

Hook 类型

  1. PreToolUse - 工具执行前(校验、提醒)
  2. PostToolUse - 工具完成后(格式化、反馈循环)
  3. UserPromptSubmit - 当你发送消息时
  4. Stop - 当 Claude 完成响应时
  5. PreCompact - 上下文压缩前
  6. Notification - 权限请求

示例:在长时间运行的命令前提醒使用 tmux

json
{
  "PreToolUse": [
    {
      "matcher": "tool == \"Bash\" && tool_input.command matches \"(npm|pnpm|yarn|cargo|pytest)\"",
      "hooks": [
        {
          "type": "command",
          "command": "if [ -z \"$TMUX\" ]; then echo '[Hook] Consider tmux for session persistence' >&2; fi"
        }
      ]
    }
  ]
}

Image

在 Claude Code 中运行 PostToolUse hook 时你会收到的反馈示例

专业提示: 使用 hookify plugin 以对话方式创建 hooks,而不是手写 JSON。运行 /hookify 并描述你想要什么。

Subagents

Subagents 是你的 orchestrator(主 Claude)可以委派任务给它们的进程,它们的作用域有限。它们可以在后台或前台运行,从而为主 agent 释放上下文。

Subagents 和 skills 配合得很好,一个能够执行你部分 skills 的 subagent 可以被委派任务,并自主使用这些 skills。它们也可以通过特定工具权限进行沙箱化。

bash
# 示例 subagent 结构
~/.claude/agents/
  planner.md           # 功能实现规划
  architect.md         # 系统设计决策
  tdd-guide.md         # 测试驱动开发
  code-reviewer.md     # 质量/安全审查
  security-reviewer.md # 漏洞分析
  build-error-resolver.md
  e2e-runner.md
  refactor-cleaner.md

为每个 subagent 配置允许的 tools、MCPs 和权限,以实现正确的作用域控制。

Rules 和 Memory

你的 .rules 文件夹保存着 Claude 应当始终遵循的 .md 文件最佳实践。有两种方式:

  1. 单个 CLAUDE.md - 所有内容放在一个文件中(用户级或项目级)
  2. Rules 文件夹 - 按关注点分组的模块化 .md 文件
bash
~/.claude/rules/
  security.md      # 不要硬编码密钥,校验输入
  coding-style.md  # 不可变性、文件组织
  testing.md       # TDD 工作流,80% 覆盖率
  git-workflow.md  # 提交格式,PR 流程
  agents.md        # 何时委派给 subagents
  performance.md   # 模型选择,上下文管理

示例规则:

  • 代码库中不要使用 emoji
  • 前端避免使用紫色色调
  • 部署前始终测试代码
  • 优先模块化代码,而不是 mega-files
  • 永远不要提交 console.logs

MCPs(Model Context Protocol)

MCPs 让 Claude 直接连接到外部服务。它不是 API 的替代品,而是围绕 API 的 prompt 驱动封装,使信息导航更灵活。

示例:Supabase MCP 让 Claude 拉取特定数据,直接在上游运行 SQL,而不需要复制粘贴。数据库、部署平台等也是同理。

Image

supabase mcp 列出 public schema 中表的示例

Claude 中的 Chrome: 这是一个内置的 plugin MCP,让 Claude 可以自主控制你的浏览器,点击浏览以查看事物如何运作。

关键:上下文窗口管理

对 MCPs 要挑剔一些。我会把所有 MCPs 保留在用户配置中,但禁用所有未使用的。进入 /plugins 并向下滚动,或者运行 /mcp

在压缩之前,你的 200k 上下文窗口,如果启用了太多工具,可能只剩 70k。性能会显著下降。

Image

使用 /plugins 进入 MCPs,查看当前安装了哪些以及它们的状态

经验法则: 配置中可以有 20-30 个 MCPs,但保持启用数低于 10 / 活跃工具低于 80。

Plugins

Plugins 将工具打包,便于安装,而不是进行繁琐的手动配置。一个 plugin 可以是 skill + MCP 的组合,或者打包在一起的 hooks/tools。

安装 plugins:

bash
# 添加一个 marketplace
claude plugin marketplace add https://github.com/mixedbread-ai/mgrep

# 打开 Claude,运行 /plugins,找到新的 marketplace,然后从那里安装

Image

显示新安装的 Mixedbread-Grep marketplace

LSP Plugins: 如果你经常在编辑器之外运行 Claude Code,它们尤其有用。Language Server Protocol 为 Claude 提供实时类型检查、go-to-definition 和智能补全,而不需要打开 IDE。

bash
# 已启用 plugins 示例
typescript-lsp@claude-plugins-official  # TypeScript 智能支持
pyright-lsp@claude-plugins-official     # Python 类型检查
hookify@claude-plugins-official         # 以对话方式创建 hooks
mgrep@Mixedbread-Grep                   # 比 ripgrep 更好的搜索

和 MCPs 一样的提醒,注意你的上下文窗口。

Tips 和 Tricks

键盘快捷键

  • Ctrl+U - 删除整行(比疯狂按退格更快)
  • ! - 快速 bash 命令前缀
  • @ - 搜索文件
  • / - 发起斜杠命令
  • Shift+Enter - 多行输入
  • Tab - 切换 thinking 显示
  • Esc Esc - 中断 Claude / 恢复代码

并行工作流

/fork - 分叉对话以并行处理不重叠的任务,而不是疯狂发送排队消息

Git Worktrees - 用于无冲突的重叠并行 Claude。每个 worktree 都是一个独立 checkout

bash
git worktree add ../feature-branch feature-branch
# 现在在每个 worktree 中分别运行 Claude 实例

用于长时间运行命令的 tmux: 流式查看并监控 Claude 运行的日志/bash 进程。

让 claude code 启动前端和后端服务器,并通过 tmux 连接到 session 来监控日志

bash
tmux new -s dev
# Claude 在这里运行命令,你可以分离并重新附加
tmux attach -t dev

mgrep > grep: mgrep 相比 ripgrep/grep 是显著改进。通过 plugin marketplace 安装,然后使用 /mgrep skill。既支持本地搜索,也支持网页搜索。

bash
mgrep "function handleSubmit"  # 本地搜索
mgrep --web "Next.js 15 app router changes"  # 网页搜索

其他有用命令

  • /rewind - 返回到先前状态
  • /statusline - 使用 branch、context %、todos 自定义
  • /checkpoints - 文件级撤销点
  • /compact - 手动触发上下文压缩

GitHub Actions CI/CD

在你的 PR 上用 GitHub Actions 设置代码审查。配置完成后,Claude 可以自动审查 PR。

Image

claude 批准一个 bug 修复 PR

沙箱化

对高风险操作使用 sandbox mode,Claude 会在受限环境中运行,而不会影响你的实际系统。(使用 --dangerously-skip-permissions 则相反,让 claude 自由行动,如果不小心会有破坏性。)

关于编辑器

虽然编辑器不是必需的,但它会对你的 Claude Code 工作流产生正面或负面的影响。虽然 Claude Code 可以在任何终端中工作,但把它和一个能力强的编辑器配合使用,可以解锁实时文件跟踪、快速导航和集成命令执行。

Zed(我的偏好)

我使用 Zed ,这是一个基于 Rust 的编辑器,轻量、快速且高度可定制。

为什么 Zed 和 Claude Code 配合得很好:

  • Agent Panel 集成 - Zed 的 Claude 集成让你在 Claude 编辑文件时实时追踪文件变化。可以在不离开编辑器的情况下跳转到 Claude 引用的文件
  • 性能 - 用 Rust 编写,启动瞬间完成,处理大型代码库也不会卡顿
  • CMD+Shift+R Command Palette - 在可搜索 UI 中快速访问你所有自定义斜杠命令、调试器和工具。即使你只是想运行一个快速命令,也不用切换到终端
  • 极低资源占用 - 在重度操作期间不会与 Claude 争夺系统资源
  • Vim 模式 - 如果你喜欢的话,支持完整 vim 键位绑定

Image

使用 CMD+Shift+R 的自定义命令下拉菜单的 Zed Editor。

Following mode 显示为右下角的靶心图标。

  1. 分屏 - 一边是运行 Claude Code 的终端,另一边是编辑器
  2. Ctrl + G - 在 Zed 中快速打开 Claude 当前正在处理的文件
  3. 自动保存 - 启用 autosave,这样 Claude 读取到的文件总是最新的
  4. Git 集成 - 在提交前使用编辑器的 git 功能审查 Claude 的更改
  5. 文件监视器 - 大多数编辑器会自动重新加载变更文件,确认这项功能已启用

VSCode / Cursor

这也是一个可行的选择,并且与 Claude Code 配合良好。你可以在终端模式中使用它,通过 \ide 与编辑器自动同步,从而启用 LSP 功能(现在有了 plugins 之后,这一点多少显得有些重复)。或者你也可以选择扩展,它与 Editor 集成得更深,并且有匹配的 UI。

Image

直接来自文档 https://code.claude.com/docs/en/vs-code

我的配置

Plugins

已安装:(我通常一次只启用其中 4-5 个)

markdown
ralph-wiggum@claude-code-plugins       # 循环自动化
frontend-design@claude-code-plugins    # UI/UX 模式
commit-commands@claude-code-plugins    # Git 工作流
security-guidance@claude-code-plugins  # 安全检查
pr-review-toolkit@claude-code-plugins  # PR 自动化
typescript-lsp@claude-plugins-official # TS 智能支持
hookify@claude-plugins-official        # Hook 创建
code-simplifier@claude-plugins-official
feature-dev@claude-code-plugins
explanatory-output-style@claude-code-plugins
code-review@claude-code-plugins
context7@claude-plugins-official       # 实时文档
pyright-lsp@claude-plugins-official    # Python 类型
mgrep@Mixedbread-Grep                  # 更好的搜索

MCP 服务器

配置(用户级):

json
{
  "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
  "firecrawl": { "command": "npx", "args": ["-y", "firecrawl-mcp"] },
  "supabase": {
    "command": "npx",
    "args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref=YOUR_REF"]
  },
  "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"] },
  "sequential-thinking": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
  },
  "vercel": { "type": "http", "url": "https://mcp.vercel.com" },
  "railway": { "command": "npx", "args": ["-y", "@railway/mcp-server"] },
  "cloudflare-docs": { "type": "http", "url": "https://docs.mcp.cloudflare.com/mcp" },
  "cloudflare-workers-bindings": {
    "type": "http",
    "url": "https://bindings.mcp.cloudflare.com/mcp"
  },
  "cloudflare-workers-builds": { "type": "http", "url": "https://builds.mcp.cloudflare.com/mcp" },
  "cloudflare-observability": {
    "type": "http",
    "url": "https://observability.mcp.cloudflare.com/mcp"
  },
  "clickhouse": { "type": "http", "url": "https://mcp.clickhouse.cloud/mcp" },
  "AbletonMCP": { "command": "uvx", "args": ["ableton-mcp"] },
  "magic": { "command": "npx", "args": ["-y", "@magicuidesign/mcp@latest"] }
}

按项目禁用(上下文窗口管理):

markdown
# 在 ~/.claude.json 的 projects.[path].disabledMcpServers 下
disabledMcpServers: [
  "playwright",
  "cloudflare-workers-builds",
  "cloudflare-workers-bindings",
  "cloudflare-observability",
  "cloudflare-docs",
  "clickhouse",
  "AbletonMCP",
  "context7",
  "magic"
]

这才是关键,我配置了 14 个 MCP,但每个项目只启用大约 5-6 个。这样能保持上下文窗口健康。

关键 Hooks

json
{
  "PreToolUse": [
    // 为长时间运行命令提醒 tmux
    { "matcher": "npm|pnpm|yarn|cargo|pytest", "hooks": ["tmux reminder"] },
    // 阻止不必要的 .md 文件创建
    { "matcher": "Write && .md file", "hooks": ["block unless README/CLAUDE"] },
    // git push 之前先审查
    { "matcher": "git push", "hooks": ["open editor for review"] }
  ],
  "PostToolUse": [
    // 用 Prettier 自动格式化 JS/TS
    { "matcher": "Edit && .ts/.tsx/.js/.jsx", "hooks": ["prettier --write"] },
    // 编辑后做 TypeScript 检查
    { "matcher": "Edit && .ts/.tsx", "hooks": ["tsc --noEmit"] },
    // 对 console.log 发出警告
    { "matcher": "Edit", "hooks": ["grep console.log warning"] }
  ],
  "Stop": [
    // session 结束前审计 console.logs
    { "matcher": "*", "hooks": ["check modified files for console.log"] }
  ]
}

自定义状态栏

显示用户、目录、带 dirty 指示器的 git branch、剩余上下文百分比、模型、时间和 todo 数量:

Image

我在 Mac 根目录中的 statusline 示例

Rules 结构

markdown
~/.claude/rules/
  security.md      # 强制安全检查
  coding-style.md  # 不可变性、文件大小限制
  testing.md       # TDD,80% 覆盖率
  git-workflow.md  # Conventional commits
  agents.md        # Subagent 委派规则
  patterns.md      # API 响应格式
  performance.md   # 模型选择(Haiku vs Sonnet vs Opus)
  hooks.md         # Hook 文档

Subagents

markdown
~/.claude/agents/
  planner.md           # 拆解功能
  architect.md         # 系统设计
  tdd-guide.md         # 先写测试
  code-reviewer.md     # 质量审查
  security-reviewer.md # 漏洞扫描
  build-error-resolver.md
  e2e-runner.md        # Playwright 测试
  refactor-cleaner.md  # 死代码清理
  doc-updater.md       # 保持文档同步

关键结论

  1. 不要过度复杂化,把配置当成 fine-tuning,而不是架构
  2. 上下文窗口很宝贵,禁用未使用的 MCPs 和 plugins
  3. 并行执行,分叉对话,使用 git worktrees
  4. 把重复工作自动化,用 hooks 做格式化、lint 和提醒
  5. 给你的 subagents 明确作用域,有限工具 = 更专注的执行

参考资料

- Plugins Reference

- Hooks Documentation

- Checkpointing

- Interactive Mode

- Memory System

- [Subagents]

- [MCP Overview]

注意:这只是部分细节。如果大家感兴趣,我可能会再发更多关于具体细节的帖子。